Linux中國

《代碼英雄》第三季(8):C 語言之巨變

本文是《代碼英雄》系列播客《代碼英雄》第三季(8):C 語言之巨變音頻腳本。

導語:C 語言和 UNIX 是現代計算的根基。我們這一季介紹的許多語言都與 C 語言有關,或者至少受到 C 語言的影響。但是 UNIX 和 C 都只是 貝爾實驗室 Bell Labs 的幾個開發人員作為秘密計劃項目創造出來兩個成果而已。

貝爾實驗室是二十世紀中期的一個創新中心。Jon Gertner 將其描述為一個「創意工廠」。他們在二十世紀 60 年代最大的項目之一是幫助建立一個名為 Multics 的 分時 time-sharing 操作系統。Joy Lisi Rankin 博士解釋了當時關於分時系統的一些宣傳,它被描述為有可能使計算成為一種公共服務。大型團隊投入了數年的精力來構建 Multics —— 但這並不是他們所希望的成果。貝爾實驗室在 1969 年正式遠離了分時系統。但正如 Andrew Tanenbaum 所描述的那樣,一個由英雄組成的小團隊還是堅持了下來。C 語言和 UNIX 就是這樣的結果。他們並不知道他們的工作會對技術的發展產生多大的影響。

00:00:00 - 發言人 1

我們掀起了新一波的研究浪潮。我們的創造力正在延伸。

00:00:10 - 發言人 2

噪音、噪音。

00:00:13 - 發言人 1

這些人是貝爾電話實驗室的設計工程師。

00:00:16 - Saron Yitbarek

在上世紀 60 年代,坐落於新澤西州默里山的貝爾實驗室,是科技革新的中心。在那裡,我們的未來科技邁出了第一步。在那裡,貝爾實驗室發明了激光與晶體管,它還是資訊理論的搖籃。在 1968 年,貝爾實驗室的四名程序員創造了一種極具開拓性的工具,它根本地改變了我們世界運行的方式,也標誌著貝爾實驗室的種種創新達到了新的高峰。

00:00:53

我是 Saron Yitbarek,這裡是《代碼英雄》—— 一款來自紅帽公司的原創播客。在一整季的節目中,我們追尋著編程語言世界中最具影響力的一些故事,現在,我們終於迎來了這一季的結尾。我認為,我們把最好的故事留到了最後。這個故事中的編程語言使本季中提到的其他編程語言成為了可能。在正好 50 年以前,C 語言在貝爾實驗室被設計出來,這是一種非常基礎的通用程序設計語言。它是如此的基礎,以至於我們有時候都會忘記,C 語言的發明是多麼意義深遠的成就。

00:01:35

為了得到事件的全貌,我們需要回到上世紀 60 年代,正好在 C 語言的誕生之前。那是一個一切似乎都有可能的時代。

00:01:46 - Jon Gertner

在上世紀 60 年代,貝爾實驗室簡直是研究人員的世外桃源。在今天,已經很難找到與貝爾實驗室相似的企業研發實驗室了。

00:01:56 - Saron Yitbarek

這是 Jon Gertner,他是《 創意工廠:貝爾實驗室與美國革新大時代 The Idea Factory: Bell Labs and the Great Age of American Innovation 》的作者。我們採訪了 Jon,讓他大家解釋當時貝爾實驗室的情況。為什麼在上世紀 60 年代,貝爾實驗室能夠成為他所說的「創意工廠」呢?

00:02:15 - Jon Gertner

我想今天我們都相信——「競爭帶來偉大的科技革新」,但是我不能確定這種觀點的正確性,並且,其實,貝爾實驗室的成就在一定程度上是與這種觀點相悖的。貝爾實驗室的工程師和科學家們並沒有特別大的壓力,但是與此同時,由於貝爾實驗室在諸多的研究實驗室中的地位,它又確實可以僱傭到最優秀、最聰明的研究者,並給他們足夠的時間去研究感興趣的問題,同時提供大量的資助。如果你能證明你的研究項目符合這家電話公司(LCTT 譯註:指 AT&T)的目標和理念,你就能夠得到經費。

00:03:00 - Saron Yitbarek

而 Jon 強調,雖然貝爾實驗室是一個商業公司的產物,但它的價值觀還是比較接近學術界的。通過讓員工自行決定工作方式及內容,貝爾實驗室實踐了類似於開源社區的開放式領導原則。

00:03:19 - Jon Gertner

這是諸如蘋果、谷歌與微軟這樣的大公司出現前的時代。計算機的歷史更多的聚焦在西海岸,聚焦於 自製計算機俱樂部 Homebrew Computer Clum 這樣的組織,以及從其中發展而出的企業;但是我認為貝爾實驗室和那些企業一樣重要。貝爾實驗室坐落於一個現在看來幾乎不可思議的地方:新澤西的郊區。但是,這裡曾聚集了對科技突破做出了巨大貢獻的科學家、研究者和計算機工程師,他們的研究成果對全世界都有驚天動地般的顯著影響。

00:03:54 - Saron Yitbarek

分時 time-sharing 」就是這些驚天動地的項目之一。它的核心概念很簡單,實現難度卻極大。他們能構建一個能夠同時由成百上千的用戶使用的操作系統嗎?這樣的發明將會使當時的計算機領域為之震動。從 1964 年起,貝爾實驗室的天才們,與 通用電氣 General Electric 和麻省理工學院(MIT)合作,試圖集體推進這項工作的進展。實際上,麻省理工學院在一年前已經有了相關的研究項目,即 MAC 計劃 Project MAC ;但是現在,所有這些頂級團隊已經團結起來,開始著手鑽研大型主機分時操作系統的構建方式。

00:04:40

實際上早在 1959 年, 約翰·麥卡錫 John McCarthy 就提出了分時操作系統的概念。請收聽我們 第七集 的節目獲知更多細節。他設想了一種可以在多個用戶之間切換其「注意力」的大型計算機。麥卡錫認定,這樣的一種機器有潛力極大地拓展現有的計算機文化。讓我們來設想一下吧,如果一千名用戶能夠同時在一台機器上工作,你就完成了對整個編程與計算機世界的民主化。現在,這支群星薈萃的團隊準備著手將麥卡錫的夢想變成現實,並為他們想像中的操作系統起了一個名字 —— Multics(LCTT 譯註:Multi- 前綴代表「多人的」)。

00:05:23

Multics 團隊為分時操作系統進行了多年的工作,但是該項目遇到了嚴重的資金困難,並且在十年之後,項目仍然看不到盡頭。雪上加霜的是,項目的領導者 Bill Baker 是一個化學家,對貝爾實驗室的計算機科學部門並不感興趣。除此之外,我們仍然能找到一個新的問題 —— 自尊心問題。

00:05:46 - Jon Gertner

在貝爾實驗室,人們每天習以為常的一件事情就是獨自工作。我的意思是,貝爾實驗室的人們有一種感覺:他們認為自己擁有一切他們所需要的的人才和構思,並且擁有最先進的科技,當他們遇到值得解決的問題時,他們有能力去解決這樣的問題。這種看法可能有一定合理性;但是 Multics 項目在貝爾實驗室沒有進展,在某種程度上也可能是因為像這樣更加複雜的、合作性的工作在貝爾實驗室的體系中運轉不良,也不能讓那裡的高管們滿意。

00:06:20 - Saron Yitbarek

Jon Gertner 是 《創意工廠》 The Idea Factory 一書的作者,他剛剛發表的新書是 《世界盡頭的冰》 The Ice at the End of the World

00:06:32

貝爾實驗室於 1969 年四月正式宣布放棄 Multics 項目,但這是否就是故事的結尾呢?就貝爾實驗室而言,分時操作系統 Multics 之夢已經破滅。但是這個夢真的結束了嗎?結果卻並不是這樣,並非所有貝爾實驗室的研究人員都放棄了分時操作系統。四個頑固的拒不退讓者在所有人都已放棄之後,繼續堅持這一夢想,而那就是下一個故事了。

00:07:08

說實話,有些夢想太美好了,這樣的夢想是很難被人拋棄的。

00:07:12 - Joy Lisi Rankin

這是一件大事業。

00:07:14 - Saron Yitbarek

這位是 Joy Lisi Rankin,她是 《美國計算機人物史》 A People's History of Computing in the United States 一書的作者。Joy 將會和我聊聊分時操作系統的理想,以及為什麼分時操作系統如此不可或缺。

00:07:27 - Joy Lisi Rankin

開發分時操作系統是一件重要且極富雄心壯志的事,直到該項目開始之前,大部分上世紀 60 年代早期的分時系統在一台主機上都約有 40 至 50 個終端。因此,提升終端的數量是重要性很高的一件事,貝爾實驗室的雄心很可能超出了大部分人的認知,這也是這個項目在實現最初目的的過程中碰到了不少困難的原因。但是,儘管如此,分時操作系統繼續以不同的形態發展,並真正地走向繁榮;分時操作系統不僅僅在麻省理工學院得到發展,也走向了其他的地方。

00:08:09 - Saron Yitbarek

是啊。那麼,當我們談起上世紀 60 年代,是誰在推動分時操作系統的需求?你提到了麻省理工學院、通用電氣公司和貝爾實驗室。那麼我們的關注點是商業還是學術團體?誰才是真正的推動者?

00:08:23 - Joy Lisi Rankin

我認為學術團體和商業團體共同推動了發展的進程,除此以外,一些 科學 scientific 團體也參與了這項事業,因為,正如我之前所說,分時操作系統是一種更加一對一、富有互動性的計算體驗。但是從另一個角度來看,我也會說教育工作者也同樣在推動這件事的發展。並且,從國家的層面上講,當時也在進行關於創建全國性計算設施的對話。那麼,基本上來說,所謂的全國性計算設施指的就是全國性的分時操作系統網路。真的,美國的思想領袖們也有這樣的言論,他們認為這樣的系統會是與供電、電話、供水一樣的基礎性服務。

00:09:08 - Saron Yitbarek

哇哦。

00:09:08 - Joy Lisi Rankin

對啊,我知道的!這確實很……

00:09:09 - Saron Yitbarek

那可真是一項大事業。

00:09:11 - Joy Lisi Rankin

那是一項非常大的事業。

00:09:13 - Saron Yitbarek

Joy 讓我想起了一件事。儘管這一期節目主要聚焦於創造了 C 語言和 UNIX 操作系統的團隊,但是在貝爾實驗室之外,對分時操作系統的推動是一項運動,比任何一個團隊都大。將計算機視為公共設施是一個非常有意義的想法,在這項事業中,有許多優秀的人物,可惜我們不能請他們來到這裡,比如 Bob Albrecht 和 Martin Greenberger ,以及其他的一些傑出人物。

00:09:37

好的,在進行了一些預先說明之後,讓我繼續和 Joy 的對話吧。

00:09:41 - Joy Lisi Rankin

那麼,當約翰·麥卡錫在麻省理工大學的演講上首次公開的談論分時操作系統時,他明確的將其與電力進行了比較,並說:「這是一個讓所有人都能使用計算機的方式,不僅僅是在學校里和商業活動中,還在每個人的家裡。」回首過去,再閱讀當時的文章與檔案,許多人都確信,未來會出現一種能夠被規範化管理的計算公共設施。因此,人們對這種全國性的分時基礎設施充滿了信心和支持。

00:10:22 - Saron Yitbarek

非常有趣的一點是,在 1970 年,IBM 實際上已經退出了分時操作系統這一產業。即使是通用電氣也出售了他們的大型主機部門,不過他們還仍然保留了一部分分時操作系統相關的業務。讓我們簡單地談一談這些吧,1970 年發生了什麼?

00:10:39 - Joy Lisi Rankin

我認為 1970 年已經一定程度上已經成為某種標誌,這也許是人為假想的標誌,這一年標誌著公共計算設施與分時操作系統產業的失敗。從某些角度上來說,這種觀點是錯誤的。我認為在上世紀 60 年代末期,麻省理工和 Multics 項目明顯在創建一個支持上千個終端的分時操作系統上遇到了困難,而這是一個知名度極高、影響力很大的項目。在同一時期,數十個基於分時計算模型的商業項目在美國興起並繁榮發展。這是一個科技泡沫。隨後,對於分時操作系統的熱情走向衰落。這不完全是因為通用電氣出售了他們的計算主機業務,他們在上世紀 70 年代至 80 年代間一直保留著他們的分時計算業務,並且這一業務盈利狀況良好。除此以外,當時的大學,例如麻省理工學院,也繼續運行著他們的分時操作系統,直到上世紀 80 年代。

00:11:52

因此,依我之見,「分時系統只是一個在上世紀 70 年代破碎的科技泡沫」的公共記憶之所以產生,一定程度上是因為人們過多地關注了 Multics 的困境。然而,事實上來說,如果我們回到過去,看一看當時的人們如何使用分時操作系統,以及分時操作系統贏得了多少利潤,了解一下分時操作系統的成功,我們就會發現,其實上世紀 70 年代正是分時系統繁榮的年代。

00:12:17 - Saron Yitbarek

現在讓我們把眼光放回到貝爾實驗室,由四位技術專家組成的小組想要創造他們自己的分時操作系統。他們是 肯·湯普遜 Ken Thompson 丹尼斯·里奇 Dennis Ritchie 道格拉斯·麥克勞伊 Doug McIlroy 約瑟夫·歐桑納 J.F. Ossanna 。不過他們並不想完成 Multics,他們想要越級跳過 Multics,製作一個不受過往拖累、功能更為強大的操作系統,他們稱之為 UNIX(LCTT 譯註:Uni- 這個前綴代表「單一的」)。

00:12:39 - Joy Lisi Rankin

我認為 Multics 是 UNIX 的靈感來源,其原因在於,許多在 Multics 上工作的程序員是如此享受分時操作系統在編程上的優點,以至於在 Multics 陷入困境時,他們便想要創造一個屬於他們自己的分時環境。這些來自貝爾實驗室的程序員,他們決定構建他們自己的編程框架與分時操作系統,這就是 UNIX 的起源。

00:13:20 - Saron Yitbarek

Joy Lisi Rankin 是 《美國計算機人物史》 A People's History of Computing in the United States 一書的作者。

00:13:29

丹尼斯·里奇 Dennis Ritchie 將自己和其他三名同事稱為一個 團隊 fellowship 。他們幾個開發者想要作為一個緊密的四人小團體而工作,並且他們需要一種能夠協調他們程序設計的硬體。但是貝爾實驗室已經放棄了分時操作系統的夢想,即便它是一個學術研究的世外桃源,給已經放棄的項目撥款這件事也超出了他們的底線。因此他們拒絕了使用新硬體的提議。為此事購買新的硬體太過昂貴了,為什麼要冒險呢?但研究員們還是堅持了下來。

00:14:05

湯普遜和里奇要求得到一種類似 GE645 的機器,這是他們一直用來進行 Multics 相關工作的型號。當他們得知無法得到經費時,他們剛剛在紙上潦草地寫下一些關於文件系統的想法。最後,他們在一個他們稱之為「太空旅行」的遊戲中成功地實現了他們的一些想法,這個遊戲運行在 PDP7 機型上,這種機型基本上與 Commodore 64 是同一個級別的。沒有貝爾實驗室的支持,他們的開發是緩慢的,至少開始是這樣的,是一個位元組、一個位元組地前進的。這四人組復活了分時操作系統之夢,以他們稱之為 UNIX 的形式。

00:14:47

不過這裡就是問題所在了:UNIX 操作系統是用彙編語言寫成的。也就是說,他們用紙帶向 PDP7 傳輸文件;你可以想像到,他們在缺乏理想的工具與上級的支持的情況下,努力構建這個開創性的操作系統時所遇到的困難。UNIX 已經獲得生命,但還沒有一種合適的編程語言能夠讓它歌唱。

00:15:23

開發者們初次嘗試為 UNIX 設計的語言稱為 B 語言,由 肯·湯普遜 Ken Thompson 編寫。

00:15:30 - Andy Tanenbaum

這是 BCPL( 基礎綜合編程語言 Basic Combined Programming Language )的一種衍生語言。

00:15:33 - Saron Yitbarek

這位是 安德魯·塔能鮑姆 Andy Tanenbaum 。他是阿姆斯特丹的一位計算機科學教授,也是許多書籍的作者,包括經典教材 《計算機網路》 Computer Networks 。讓我們聽聽他講解湯普遜的 B 語言背後的故事。

00:15:48 - Saron Yitbarek

所以說, B 語言是 BCPL 的一種衍生物?

00:15:51 - Andy Tanenbaum

BCPL 源於一種構建 CPL 編譯器的企圖,這種語言編寫的編譯器確實能夠起到作用,而 CPL 基於 ALGOL 60,ALGOL 60 語言又源於 ALGOL 58。ALGOL 58 則源於對 Fortran 進行改進的嘗試。

00:16:01 - Saron Yitbarek

搞明白了嗎?現在的問題就是,B 語言有許多歷史包袱。B 語言和它的這些前身相比,並沒有太多的突破性改變,因此,B 語言不能完成讓 UNIX 歌唱的挑戰。B 語言中沒有變數類型,對於初學者來說這是一個問題。除此以外,B 語言對應的彙編代碼仍然比 B 語言編譯器的 線程代碼 threaded-code 技術 [1] 要快。

00:16:31 - Andy Tanenbaum

BCPL 和 B 語言只有一種數據類型,就是 雙位元組類型 word 。雙位元組類型在基於雙位元組類型開發的 IBM 的 704 和 709、7090、7094 機型上效果不錯,但是從 360 和其它所有的小型電腦開始的機型都是基於 單位元組類型 byte 的。在這種情況下,雙位元組類型就不是一個好主意了,它和現代計算機的匹配程度極其糟糕。因此,顯然 B 語言無法解決現有的問題。

00:16:57 - Saron Yitbarek

那麼,該團隊之前工作使用過的所有機器都是基於雙位元組類型的,但是在基於單位元組對象的操作上,這種類型的機器就不夠好用了。幸運的是,在這個時間點上,貝爾實驗室的領導們又回來加入了 UNIX 項目,他們意識到了這個團隊中正在產生令人激動的進展。他們資助了一台價值 65000 美元的 PDP-11,並且這台機器不是基於雙位元組類型的,而是面向單位元組的。現在,裝備上了 PDP-11,丹尼斯·里奇能夠在處理編程語言的難題時更進一步。

00:17:36 - Andy Tanenbaum

丹尼斯,以及在肯的少量幫助下,決定編寫一種更加結構化新編程語言,包含其它數據類型,比如說 字元類型 char 整數類型 int 長整數類型 long 等等。

00:17:47 - Saron Yitbarek

因此,在 1971 年至 1973 年之間, 丹尼斯·里奇 Dennis Ritchie 一直在調整 B 語言。他增加了一種字元類型,並且構建了一個新的編譯器,這樣就不需要再使用線程代碼技術了。兩年結束時,B 語言已經變成了一種嶄新的語言,這就是 C 語言。

00:18:08

C 語言是一種功能強大的語言,結合了高級功能和底層特性,能夠讓使用者直接進行操作系統編程。它的一切都是如此的恰到好處。C 語言從機器層次中進行了足夠的抽象,以至於它也可以移植到其他的機型。它並非一種只能用來寫寫應用的語言。它幾乎是一種通用的編程工具,無論是在個人電腦還是超級計算機上都十分有效,而這一點極其重要,因為個人電腦革命當時已經近在眼前。

00:18:49

團隊的成員們在確定了 C 語言就是正確的道路之後,就立刻用它重寫了 UNIX 內核和許多 UNIX 組件。因此,只要你想使用 UNIX,你就必須使用 C 語言。C 語言的成功與 UNIX 的成功緊密的結合在了一起。

00:19:06 - Andy Tanenbaum

C 語言的流行,其實主要不是因為它是一門比 B 語言更優秀的語言 —— 當然它確實比 B 語言優秀 —— 而是因為,它是編寫 UNIX 的語言,並且當 UNIX 廣泛發行的時候,它自帶了一個 C 語言編譯器;甚至最後它還配備了兩個 C 語言編譯器。那麼,UNIX 受到了廣泛歡迎,每個使用它的人都有了 C 編譯器,而且 UNIX 的一切都是由 C 語言寫成的。而 C 語言是一種相當不錯的語言,它又是與 UNIX 共同出現的,那為什麼還要找其他的編程語言呢?

00:19:33 - Saron Yitbarek

從這裡開始, C 語言的價值開始顯現。

00:19:35 - Andy Tanenbaum

由於 UNIX 是用 C 語言寫成的,並且帶有一個 C 語言編譯器,C 語言與 UNIX 從一開始就在一定程度上互相依賴,因此,它們也共同成長。在一個關鍵的時間點,C 語言在 UNIX 系統中已經足夠流行時,像 Steve Johnson 這樣的人開發了可移植的 C 語言編譯器,這種編譯器可以為其他型號的計算機產生機器碼。最終,出現了面向其他操作系統的 C 語言編譯器,人們開始用 C 語言編寫各種各樣的軟體 —— 從資料庫系統到……天知道什麼奇奇怪怪的玩意兒,因為 C 語言在各種環境下都可用,並且十分有效,效率很高。

00:20:07 - Saron Yitbarek

因此,不久以後,人們也開始用 C 語言編寫與 UNIX 無關的程序,因為這門語言的優點是顯而易見的。Andy 將為我們講述,C 語言如何完全接管了整個編程世界。

00:20:20 - Andy Tanenbaum

我想說的是,C 語言在正確的時間出現在了正確的地點。在上世紀 70 年代,計算機的普及範圍遠比現在要小。普通人不會擁有計算機,並且對計算機一無所知,但是在大學和大企業所擁有的計算機中,有許多都使用了 UNIX 操作系統以及隨之而來的 C 語言,也就是說,這些大學和大企業都在使用 C 語言。這些大學與大企業發布了大量的軟體,也產生了大量的程序員。如果一個企業想招聘一名 C 程序員,發布招聘廣告後一定會有人來應聘。如果想招聘一名 B 語言程序員,沒人會來面試。

00:20:49 - Saron Yitbarek

在 C 語言的世界中,有許多基礎設施 —— 軟體、函數庫、頭文件等,這一切編程工具都構成了一個完美的閉環。

00:20:59 - Andy Tanenbaum

因此,C 語言變得越來越流行。

00:21:02 - Saron Yitbarek

現在,互聯網的興起導致了人們對 C 語言安全性的關注,這些問題在變種中得到了部分解決,比如 C#。有些時候我們會覺得,好像所有的興奮點都在 Python 或 Go 等新語言上。但是我們希望能在播客中試圖做的一件事就是讓大家回憶起當下的我們與歷史的緊密關聯,而 C 語言的影響至今仍然是不可思議的。

00:21:29

C 語言在現代最出名的產物就是 UNIX 的教子 —— Linux,而 Linux 的絕大部分都是用 C 編寫的。就連 Linux 項目使用的標準編譯器 GCC( GNU 編譯器集合 GNU Compiler Collection ),也是用 C 語言寫成的。雖然這一點可能不太引人注意,但是今天所有聚集在 Linux 上的開源編程者,都與一種在半個世紀以前的語言相聯繫,而 C 語言的統治也在年復一年的增強。

00:22:02 - Andy Tanenbaum

以上這些事情的結果就是世界上占支配地位的兩種操作系統的誕生。一個是運行在 Linux 操作系統上的安卓,而 Linux 是重寫 UNIX 操作系統的產物。而 iOS,本質上來講是一種 4.4 版的 Berkeley UNIX。因此,安卓和 iOS 從本質上說都是 UNIX。我懷疑幾乎所有的伺服器都是運行在 UNIX 或 Linux 的某個版本上的。這些伺服器在幕後發揮著巨大的作用,並且任何運行 UNIX 的系統都源於 C 語言,為 UNIX 所編寫的一切程序都使用了 C 語言。C 語言確實是無處不在的。

00:22:41 - Saron Yitbarek

安德魯·塔能鮑姆 Andy Tanenbaum 是一名計算機科學教授,他是《計算機網路》一書的作者。說點有趣的題外話吧,他同時也是 MINIX,一個免費、開源版本的 UNIX 的作者,而 MINIX 事實上也是 林納斯•托瓦茲 Linus Torvalds 開發 Linux 的靈感來源。當然,Andy 使用 C 語言編寫 MINIX。

00:23:03 - Saron Yitbarek

今天,C 語言存在於我們生活中的任何一個角落,從火星上的漫遊車到台式電腦上的瀏覽器。它影響了許多我們在本季節目中提到的語言,例如 Go、Javascript 和 Perl。由於 C 語言與 UNIX 密不可分的聯繫,C 語言很可能是分布最廣泛的編程語言。

00:23:28 - 發言人 7

1998 年美國國家科學獎的獲得者是——來自朗訊科技公司貝爾實驗室的 肯·湯普遜 Kenneth L. Thompson 丹尼斯·里奇 Dennis M. Ritchie 的團隊。

00:23:40 - Saron Yitbarek

回望上世紀 60 年代,這四位貝爾實驗室的員工—— 肯·湯普遜 Ken Thompson 丹尼斯·里奇 Dennis Ritchie 道格拉斯·麥克勞伊 Doug McIlroy 約瑟夫·歐桑納 J.F. Ossanna ——他們那時還不得不向上級乞求關注和資助。但是在 1998 年,湯普遜和里奇就收到了美國國家科學獎,這是為了表彰他們在 C 語言和 UNIX 上的工作。他們也共享了一百萬美元的圖靈獎獎金。歷史的眼光是公正的。

00:24:10

在一整季的節目中,我們一直在追尋那些我們最喜愛的編程語言的發展沿革與魅力。無論它們像 C 語言一樣搭上了操作系統發展的便車,又或者是像 Go 語言一樣在一種新的基礎架構上發展,有一件事是永恆不變的:編程語言有它們自己的生命。它們是活著的。它們出生,成長,走向成熟。有時,編程語言也會變老,走向消亡。我們越多的了解這些語言,我們越會發現編程語言是一股重要的力量,它們總是在不斷地變化,以切合時代的需要。我們的職責就是意識到這些變化,並且加以回應。我們的語言一直都是構建我們想要的世界的最佳工具。

00:25:00

以上就是我們所有第三季的《代碼英雄》節目。我希望大家喜歡收聽我們的節目。節目的第四季已經在製作中,即將推出,敬請期待。

00:25:13

代碼英雄》是來自紅帽公司的原創播客。

00:25:18

如果你想深入了解 C 語言或者本季節目中我們提到的任何其他編程語言的故事,歡迎訪問 redhat.com/commandlineheroes。我是 Saron Yitbarek ,下期之前,編程不止。

  1. 線程代碼 threaded-code 技術:一種通過把一系列調用指令轉換成一完整的地址表,然後使用恰當的方式調用的技術。線程代碼最初被用來減少代碼的佔用空間,提高代碼密度。通俗地講,這種技術有點類似於在 C 語言中把一系列的 switch-case 語句轉化為用函數指針數組實現的形式。 ↩︎

什麼是 LCTT SIG 和 LCTT LCRH SIG

LCTT SIG 是 LCTT 特別興趣小組 Special Interest Group ,LCTT SIG 是針對特定領域、特定內容的翻譯小組,翻譯組成員將遵循 LCTT 流程和規範,參與翻譯,並獲得相應的獎勵。LCRH SIG 是 LCTT 聯合紅帽(Red Hat)發起的 SIG,當前專註任務是《代碼英雄》系列播客的腳本漢化,已有數十位貢獻者加入。敬請每周三、周五期待經過我們精心翻譯、校對和發布的譯文。

歡迎加入 LCRH SIG 一同參與貢獻,並領取紅帽(Red Hat)和我們聯合頒發的專屬貢獻者證書。

via: https://www.redhat.com/en/command-line-heroes/season-3/the-c-change

作者:Red Hat 選題:bestony 譯者:QwQ2000 校對:Northurland, wxy

本文由 LCRH 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國